#pragma once

#include <stdint.h>
#include "../utils/nstring.h"


double      os_GetTime();
uint64_t    os_GetPhysicalMemory();             // byte-ban
int         os_GetCPUClockMhz();

void        os_GetOSName(CChString *out);       // "Microsoft Windows 6.0.6000, WOW64, x64" 
void        os_GetCRuntime(CChString *out);     // "release, v123" 
void        os_GetCompiler(CChString *out);     // "msvc++, v123" 
void        os_GetHw(CChString *out);           // AMD Athlon 3200+

//
// szalak (TODO: ez eleg benacska lett)
//

#ifdef USE_POSIX_THREADS
typedef void* (*THREADFUNC)(void*);
#else 
typedef void (*THREADFUNC)(void*);
#endif

void       *os_CreateThreadVariables(int count);    // nem egy, hanem count darab szal (nem tul valoszeru fuggveny, de most ilyen kell)
void        os_DeleteThreadVariables(void *&thread_variables, int count);

void        os_StartThread(void *thread_variables, int i, THREADFUNC thread, void *thread_param);
void        os_JoinThread(void *thread_variables, int i);
void        os_CloseThread(void *thread_variables, int i);


//
// net
//

bool        os_NetInit();
void        os_NetCleanup();
